/*
 * Copyright 2008 Jeff Dwyer
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.apress.progwt.client.service.remote;

import java.util.List;

import com.apress.progwt.client.domain.User;
import com.apress.progwt.client.domain.commands.SiteCommand;
import com.apress.progwt.client.domain.dto.ForumBootstrap;
import com.google.gwt.user.client.rpc.AsyncCallback;

import edu.rpi.bt.client.domain.Comment;
import edu.rpi.bt.client.domain.Destination;

public interface GWTDestinationServiceAsync {

    void executeAndSaveCommand(SiteCommand comm,
            AsyncCallback<SiteCommand> callback);

    void forumBootstrapDummy(AsyncCallback<ForumBootstrap> callback);

    void getAllDestinations(AsyncCallback<List<Destination>> callback);
    void getAllTrips(AsyncCallback<List<Destination>> callback);
    void getAllLocations(long tripId, AsyncCallback<List<Destination>> callback);
    void getDestinationsForUser(User user, AsyncCallback<List<Destination>> callback) ;

 //   void getAllLocations(double lat, double lon,
            //AsyncCallback<List<Destination>> );
   
    void getAllLocations(double minLat, double minLon, double maxLat, double maxLon,
            AsyncCallback<List<Destination>> callback);
    void getAllLocations(double lat, double lon, AsyncCallback<List<Destination>> callback);

    void getAllCommentsForLocation(long destId, AsyncCallback<List<Comment>> callback);

    void getDestination(long locationId, AsyncCallback<Destination> callback);

    void getImages(String search, int num, AsyncCallback<List<String>> callback);

}
